package elm.controller;

import elm.dao.OrderDao;
import elm.entity.po.Order;
import elm.entity.po.vo.OrderRequest;
import elm.service.OrderService;
import jakarta.annotation.Resource;
import org.springframework.web.bind.annotation.*;

import java.util.Collections;

// 使用 OpenAPI 3 的注解包
import io.swagger.v3.oas.annotations.tags.Tag;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;

/**
 * 订单信息管理控制器
 * 提供订单数据的查询接口，包括：
 * - 查询所有订单列表
 * - 根据ID查询订单信息
 * - 获取单个订单详细信息
 */
@RestController
@RequestMapping("/order")
@Tag(name = "订单信息管理接口")
public class OrderController {
    @Resource
    private OrderDao orderDao;
    @Resource
    private OrderService orderService;

    /**
     * 根据用户ID获取订单列表
     * 当id=0时返回全部订单，其他情况返回空集合
     *
     * @param id 请求参数，用户唯一标识符
     * @return 符合条件的订单集合
     * 接口示例：/order/?id=123 或 /order/?id=0（获取全部）
     * 注意事项：仅当id为0时返回完整列表，其他情况均返回空集合
     */
    @GetMapping("/")
    @Operation(summary = "根据用户ID获取订单列表")
    public Iterable<Order> getById(
            @Parameter(name = "id", description = "订单唯一标识符", required = true, example = "123")
            @RequestParam("id") Long id) {
        if(id!=null){
            return orderDao.findByUserId(id);
        }
        return Collections.emptyList(); // 返回空集合，避免类型不一致
    }
    /**
     * 创建新订单
     *
     * @param orderRequest 订单信息
     * @return 创建成功的订单对象
     * 接口示例：/order/create
     * 注意事项：需要提供完整的订单信息，包括用户ID和商家ID
     */
    @PostMapping("/create")
    @Operation(summary = "创建新订单")
    public Order createOrder(
            @Parameter(name = "orderRequest", description = "订单信息", required = true)
            @RequestBody OrderRequest orderRequest) {
        if(orderRequest.getBusinessId()==null || orderRequest.getUserId()==null){
            return null;
        }
        System.out.println(orderRequest);
        return orderService.createOrder(orderRequest);
    }

}
